package main

import "github.com/lxn/walk"

type NameTable struct {
	walk.TableModelBase
	items []NameTableItem
}

type NameTableItem struct {
	Name  string
	Label string
}

func (m *NameTable) RowCount() int {
	return len(m.items)
}

func (m *NameTable) Value(row, col int) interface{} {
	item := m.items[row]
	switch col {
	case 0:
		return item.Name
	case 1:
		return item.Label
	}
	return ""
}

func (m *NameTable) SetValue(v []NameTableItem) { // 设置全部数据
	m.Clear()
	m.items = v
	m.PublishRowsReset()
}

func (m *NameTable) GetValue() []NameTableItem { // 获取全部数据
	return m.items
}

func (m *NameTable) AddItem(item NameTableItem) { // 添加数据
	m.items = append(m.items, item)
	m.PublishRowsInserted(len(m.items)-1, 1)
}

func (m *NameTable) RemoveItem(index int) { // 删除数据
	m.items = append(m.items[:index], m.items[index+1:]...)
	m.PublishRowsRemoved(index, 1)
}

func (m *NameTable) SetItem(index int, item NameTableItem) { // 设置数据
	m.items[index] = item
	m.PublishRowsChanged(index, 1)
}

func (m *NameTable) GetItem(index int) NameTableItem { // 获取数据
	return m.items[index]
}

func (m *NameTable) Clear() { // 清空数据
	m.items = []NameTableItem{}
	m.PublishRowsReset()
}

func SetHead(table *walk.TableView) {
	cl := walk.NewTableViewColumn()
	err = cl.SetTitle("姓名")
	ifErr(err)
	err = table.Columns().Add(cl)
	ifErr(err)
	cl = walk.NewTableViewColumn()
	err = cl.SetTitle("标签")
	ifErr(err)
	err = table.Columns().Add(cl)
	ifErr(err)
}

var editTable = &NameTable{}
var nameTable = &NameTable{}
